package com.fruitshop.service;

import com.fruitshop.dto.CartDTO;
import com.fruitshop.vo.CartVO;

import java.math.BigDecimal;
import java.util.List;

/**
 * 购物车服务接口
 */
public interface CartService {
    
    /**
     * 添加购物车
     *
     * @param userId  用户ID
     * @param cartDTO 购物车数据
     * @return 是否成功
     */
    Boolean add(Long userId, CartDTO cartDTO);
    
    /**
     * 修改购物车
     *
     * @param userId  用户ID
     * @param id      购物车ID
     * @param cartDTO 购物车数据
     * @return 是否成功
     */
    Boolean update(Long userId, Long id, CartDTO cartDTO);
    
    /**
     * 删除购物车
     *
     * @param userId 用户ID
     * @param id     购物车ID
     * @return 是否成功
     */
    Boolean delete(Long userId, Long id);
    
    /**
     * 清空购物车
     *
     * @param userId 用户ID
     * @return 是否成功
     */
    Boolean clear(Long userId);
    
    /**
     * 获取购物车列表
     *
     * @param userId 用户ID
     * @return 购物车列表
     */
    List<CartVO> list(Long userId);
    
    /**
     * 更新购物车选中状态
     *
     * @param userId   用户ID
     * @param id       购物车ID
     * @param selected 选中状态
     * @return 是否成功
     */
    Boolean updateSelected(Long userId, Long id, Integer selected);
    
    /**
     * 全选/取消全选
     *
     * @param userId   用户ID
     * @param selected 选中状态
     * @return 是否成功
     */
    Boolean selectAll(Long userId, Integer selected);
    
    /**
     * 获取购物车商品数量
     *
     * @param userId 用户ID
     * @return 商品数量
     */
    Integer count(Long userId);
    
    /**
     * 获取购物车总金额
     *
     * @param userId 用户ID
     * @return 总金额
     */
    BigDecimal getTotalAmount(Long userId);
} 